<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //数组对象
        //创建数组的两种方式 
        //1.利用数组字面量
        let arr = [1, 2, 3];
        console.log(arr[0]);  //1

        //利用 new Array()
        let arr1 = new Array();//创建一个空数组
        let arr2 = new Array(2);//创建一个长度为2的 空数组
        let arr3 = new Array(2, 3);//创建一个长度为2，值为2和3的一个数组，等价于[2,3]
        console.log(arr1, arr2, arr3);


        //检测是否为数组方法
        //1. instanceof 运算符
        let arr4 = [];
        let arr5 = {};
        console.log(arr4 instanceof Array); //true
        console.log(arr5 instanceof Array);  //false
        //2. Array.isArray(参数);
        console.log(Array.isArray(arr4));
        console.log(Array.isArray(arr5));


        //添加元素方法
        //1. push() 在数组的末尾添加任意个元素
        let arr6 = [1, 2, 3];
        console.log(arr6);
        arr6.push(4);
        console.log(arr6);
        arr6.push(5, 'sjy', 7, 8);
        console.log(arr6);
        //2. unshift()  在开头加
        arr6.unshift('开头加', '又一个');
        console.log(arr6);


        //删除数组元素方法
        //1. pop()   删除数组最后一个元素
        arr6.pop();  //不用加参数，只能一次删一个
        console.log(arr6);  //删除谁返回谁
        //2. shift()   删除数组第一个元素
        arr6.pop();  //不用加参数，只能一次删一个
        console.log(arr6);  //删除谁返回谁


        console.log('------------------------------------筛选数组----------------------------------');
        //筛选数组
        let arr7 = [1300, 2300, 1500, 2100, 200];
        let arr8 = [];
        for (let i = 0; i < arr7.length; i++) {
            if (arr7[i] < 2000) {
                arr8.push(arr7[i]);
            }
        }
        console.log(arr8);



        //数组排序
        //1. 翻转数组
        console.log('-----------------------翻转数组----------------------------');
        let arr9 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        arr9.reverse();
        console.log(arr9);
        //数组排序  （冒泡排序）
        console.log('--------------------------------------冒泡排序----------------------');
        let arr10 = [2, 8, 3, 1, 6, 9, 7];
        arr10.sort();
        console.log(arr10);
        //情况1：
        let arr11 = [13, 4, 77, 1, 7];
        arr11.sort();
        console.log(arr11);
        //解决办法1：
        let arr12 = [13, 4, 77, 1, 7];
        arr12.sort(function (a, b) {   //sort里面加函数
            return a - b;   //升序
            //      return b - a;    //降序
        });
        console.log(arr12);


        //获取数组元素索引方法
        //1. indexOf()  从前往后查
        let arr13 = ['赵', '钱', '孙', '李', '王', '孙'];
        console.log(arr13.indexOf('赵'));
        console.log(arr13.indexOf('孙'));   //返回第一个索引
        console.log(arr13.indexOf('徐'));  //找不到返回-1
        //2. lastIndexOf()  从后往前查，返回的是正序索引
        console.log(arr13.lastIndexOf('赵'));
        console.log(arr13.lastIndexOf('孙')); //5
        console.log(arr13.lastIndexOf('徐'));



        //数组去重***
        //核心算法：遍历旧数组，然后拿着旧数组去查询新数组，没有了就添加，否则不添加
        function unique(arr) {
            let newarr15 = [];
            for (let i = 0; i < arr.length; i++) {
                if (newarr15.indexOf(arr[i]) === -1) {
                    newarr15.push(arr[i]);
                }
            }
            return newarr15;
        }
        let demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'])
        console.log(demo);



        //数组转换为字符串
        //1. toString() 数组转换字符串，逗号分隔每一项
        let arr16 = [1, 2, 3];
        console.log(arr16.toString());
        //2. join('分隔符')  方法用于把数组中的所有元素转换为一个字符串
        console.log(arr16.join('|'));
        console.log(arr16.join('&'));
        console.log(arr16.join('--'));

        //  数组的其他方法   concat()   slice()   splice()   
    </script>
</head>

<body>

</body>

</html>